veglem <- read_excel("~/cmta_proj/вег1.xlsx")
## readxl works best with a newer version of the tibble package.
## You currently have tibble v1.4.2.
## Falling back to column name repair from tibble <= v1.4.2.
## Message displays once per session.
veglem$text = removeNumbers(veglem$text)
veglem$text = removePunctuation(veglem$text)
text.tmp.veg <- system2("mystem", c("-c", "-l", "-d"), input=veglem$text, stdout=TRUE)
text.lem <- stringr::str_replace_all(text.tmp.veg, "\\{([^}]+?)([?]+)?\\}", "\\1")
text.coded <- NULL
text.df <- cbind(text.coded, text.lem)
veglem <- cbind(veglem, text.df)
veglem <- mutate(veglem, line = 1:nrow(veglem))
veglem <- dplyr::select(veglem, line, type, name_rest, text, text.lem)
veglem$text.lem <- as.character(veglem$text.lem)
veg_long <- veglem %>%
unnest_tokens(word, text.lem) %>%
filter(! word %in% stoplist) %>%
filter(! str_detect(word, "[0-9]+"))
veg.dtm <- veg_long %>%
dplyr::count(line, word)
names(veg.dtm)
## [1] "line" "word" "n"
kavlem <- read_excel("~/cmta_proj/кав1.xlsx")
kavlem$text = removeNumbers(kavlem$text)
kavlem$text = removePunctuation(kavlem$text)
text.tmp.kav <- system2("mystem", c("-c", "-l", "-d"), input=kavlem$text, stdout=TRUE)
text.lem <- stringr::str_replace_all(text.tmp.kav, "\\{([^}]+?)([?]+)?\\}", "\\1")
text.coded <- NULL
text.df <- cbind(text.coded, text.lem)
kavlem <- cbind(kavlem, text.df)
kavlem <- mutate(kavlem, line = 1:nrow(kavlem))
kavlem <- dplyr::select(kavlem, line, type, name_rest, text, text.lem)
kavlem$text.lem <- as.character(kavlem$text.lem)
kav_long <- kavlem %>%
unnest_tokens(word, text.lem) %>%
filter(! word %in% stoplist) %>%
filter(! str_detect(word, "[0-9]+"))
kav.dtm <- kav_long %>%
dplyr::count(line, word)
names(kav.dtm)
## [1] "line" "word" "n"
rest <- rbind(kavlem, veglem)
type.lemmas.or <- bind_rows(kav_long, veg_long) %>%
dplyr::count(word, type) %>%
spread(type, n, fill = 0) %>%
filter("kav" > 10 | "veg" > 10)
### Создаем функцию для рассчета логарифмической вероятности (log-likelihood: G-squared)
g2 = function(a, b) {
c = sum(a)
d = sum(b)
E1 = c * ((a + b) / (c + d))
E2 = d * ((a + b) / (c + d))
return(2*((a*log(a/E1+1e-7)) + (b*log(b/E2+1e-7))))
}
library(scales)
##
## Attaching package: 'scales'
## The following object is masked from 'package:readr':
##
## col_factor
ggplot(type.lemmas.or, aes(veg, kav)) +
geom_jitter(alpha = 0.1, size = 2.5, width = 0.25, height = 0.25) +
geom_text(aes(label = word), check_overlap = TRUE, vjust = 1.5) +
geom_abline(color = "red")
type.g2.or <- type.lemmas.or %>%
mutate(g2=g2(veg, kav)) %>%
arrange(desc(g2)) %>%
mutate(g2 = round(g2, 2))
# Создаем функцию расчета Log odds ratio
logratio <- function(a, b) {
return(log2((a/sum(a)/(b/sum(b)))))
}
# Рассчитываем Log Ratio
type.lr.or <- type.g2.or %>%
mutate(logratio = logratio(kav, veg))
type.lr.or %>%
arrange(abs(logratio))
## # A tibble: 9,010 x 5
## word kav veg g2 logratio
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 вкусно 192 170 0 -0.000646
## 2 любить 44 39 0 -0.00219
## 3 оценка 17 15 0 0.00435
## 4 правильный 9 8 0 -0.00629
## 5 день 139 124 0 -0.0115
## 6 превосходный 16 14 0 0.0164
## 7 везти 8 7 0 0.0164
## 8 вместе 8 7 0 0.0164
## 9 деловой 8 7 0 0.0164
## 10 неприятный 8 7 0 0.0164
## # ... with 9,000 more rows
type.lr.or %>%
filter(veg > 0 & kav > 0) %>%
group_by(logratio < 0) %>%
top_n(15, abs(logratio)) %>%
ungroup()
## # A tibble: 30 x 6
## word kav veg g2 logratio `logratio < 0`
## <chr> <dbl> <dbl> <dbl> <dbl> <lgl>
## 1 грузинский 217 2 255. 6.59 FALSE
## 2 чебурек 178 6 182. 4.71 FALSE
## 3 вегетарианский 1 101 143. -6.83 TRUE
## 4 укроп 1 63 86.2 -6.15 TRUE
## 5 хачапури 81 4 76.5 4.16 FALSE
## 6 шашлык 90 7 74.4 3.51 FALSE
## 7 индийский 1 45 59.7 -5.67 TRUE
## 8 домашний 68 5 57.3 3.59 FALSE
## 9 уважаемый 2 42 49.8 -4.57 TRUE
## 10 живой 54 3 49.5 3.99 FALSE
## # ... with 20 more rows
type.lr.or %>%
filter(veg > 0 & kav > 0) %>%
group_by(logratio < 0) %>%
top_n(15, abs(logratio)) %>%
ungroup() %>%
mutate(word = reorder(word, logratio)) %>%
ggplot(aes(word, logratio, fill = logratio > 0)) +
geom_col(show.legend = FALSE) +
coord_flip() +
ylab("log odds ratio (kav/veg)") +
scale_fill_discrete(name = "", labels = c("veg", "kav"))
rest <- rbind(kavlem, veglem)
stoplist <- c(stopwords("ru"), "это", "весь", "очень", "ресторан", "спасибо", "отзыв", "день")
pn.skipgrams = rest %>%
unnest_tokens(skipgram, text.lem, token = "skip_ngrams", n = 2, k = 3) %>%
select(type, line, skipgram)
pn.skipfiltered <- pn.skipgrams %>%
separate(skipgram, c("word1", "word2"), sep = " ") %>%
filter(!is.na(word2) & ! is.na(word1)) %>%
filter(!word1 %in% stoplist) %>%
filter(!word2 %in% stoplist)
## Warning: Expected 2 pieces. Missing pieces filled with `NA` in 91447 rows
## [1, 6, 11, 16, 21, 26, 31, 36, 41, 46, 51, 56, 61, 66, 71, 76, 81, 86, 91,
## 96, ...].
pn.skipfiltered %>% select(word1, word2) %>% head
## word1 word2
## 1 бабушка дедушка
## 2 бабушка родитель
## 3 дедушка родитель
## 4 дедушка ходить
## 5 родитель ходить
## 6 время чебуречная
pn.skipfreq <- pn.skipfiltered %>%
dplyr::count(word1, word2,type, sort = TRUE)
pn.skipfreq
## # A tibble: 108,574 x 4
## word1 word2 type n
## <chr> <chr> <chr> <int>
## 1 грузинский кухня kav 84
## 2 добрый ваш veg 64
## 3 вкусный еда veg 52
## 4 добрый деньбольшой veg 49
## 5 вкусный еда kav 45
## 6 деньбольшой ваш veg 40
## 7 ждать снова veg 40
## 8 приятный атмосфера veg 40
## 9 вкусный смузи veg 37
## 10 еда вкусный kav 37
## # ... with 108,564 more rows
pn.unifreq <- rest %>%
unnest_tokens(word, text.lem) %>%
filter(!word %in% stoplist) %>%
dplyr::count(word, sort = TRUE)
pn.unifreq
## # A tibble: 9,007 x 2
## word n
## <chr> <int>
## 1 вкусный 624
## 2 блюдо 603
## 3 хороший 566
## 4 кухня 491
## 5 место 491
## 6 еда 444
## 7 наш 424
## 8 меню 363
## 9 вкусно 362
## 10 приятный 360
## # ... with 8,997 more rows
pn.freqjoined <- pn.skipfreq %>%
left_join(pn.unifreq, by = c("word1" = "word"), suffix = c(".xy", ".x")) %>%
left_join(pn.unifreq, by = c("word2" = "word"), suffix = c(".xy", ".y")) %>%
mutate(n.y = n) %>% select(-n)
pn.freqjoined
## # A tibble: 108,574 x 6
## word1 word2 type n.xy n.x n.y
## <chr> <chr> <chr> <int> <int> <int>
## 1 грузинский кухня kav 84 219 491
## 2 добрый ваш veg 64 167 282
## 3 вкусный еда veg 52 624 444
## 4 добрый деньбольшой veg 49 167 49
## 5 вкусный еда kav 45 624 444
## 6 деньбольшой ваш veg 40 49 282
## 7 ждать снова veg 40 252 189
## 8 приятный атмосфера veg 40 360 268
## 9 вкусный смузи veg 37 624 136
## 10 еда вкусный kav 37 444 624
## # ... with 108,564 more rows
logDice <- function(f.xy, f.x, f.y) {
return(14 + log2( (2 * f.xy) / (f.x + f.y) ))
}
pn.logdice <- pn.freqjoined %>%
mutate(logDice = logDice(n.xy, n.x, n.y)) %>%
arrange(-logDice)
pn.logdice
## # A tibble: 108,574 x 7
## word1 word2 type n.xy n.x n.y logDice
## <chr> <chr> <chr> <int> <int> <int> <dbl>
## 1 brochettes de kav 2 1 2 14.4
## 2 крепость анатолий veg 2 1 2 14.4
## 3 светить ярко veg 2 1 2 14.4
## 4 тара уткать veg 2 2 1 14.4
## 5 шоколодный панкейка veg 2 1 2 14.4
## 6 hands of veg 2 1 3 14
## 7 of our veg 2 3 1 14
## 8 of waitresses veg 2 3 1 14
## 9 айзек кэтедрэл kav 2 2 2 14
## 10 выкатываться колобок kav 2 2 2 14
## # ... with 108,564 more rows
pn.logdice %>%
filter(n.xy > 50)
## # A tibble: 3 x 7
## word1 word2 type n.xy n.x n.y logDice
## <chr> <chr> <chr> <int> <int> <int> <dbl>
## 1 добрый ваш veg 64 167 282 12.2
## 2 грузинский кухня kav 84 219 491 11.9
## 3 вкусный еда veg 52 624 444 10.6
logdice.graph <- pn.logdice %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice.graph
## IGRAPH a726005 UN-- 22 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from a726005 (vertex names):
## [1] вкусный--блюдо вкусный--блюдо вкусный--блюдо вкусный--блюдо
## [5] вкусный--хороший вкусный--хороший вкусный--хороший вкусный--хороший
## [9] блюдо --хороший блюдо --хороший блюдо --хороший блюдо --хороший
## [13] вкусный--кухня вкусный--место вкусный--кухня вкусный--кухня
## [17] вкусный--место вкусный--место вкусный--место вкусный--кухня
## [21] блюдо --кухня блюдо --кухня блюдо --место блюдо --место
## [25] блюдо --место блюдо --кухня блюдо --кухня вкусный--еда
## + ... omitted several edges
ggraph(logdice.graph, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
logdice.graph <- pn.logdice %>%
filter(!word1 == word2) %>%
filter(!word1 == "вкусный" & ! word2 == "вкусный") %>%
filter(!word1 == "хороший" & ! word2 == "хороший") %>%
filter(!word1 == "блюдо" & ! word2 == "блюдо") %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice.graph
## IGRAPH b03403d UN-- 22 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from b03403d (vertex names):
## [1] место--кухня место--кухня место--кухня место--кухня место--еда
## [6] место--еда место--еда кухня--еда кухня--еда кухня--еда
## [11] место--еда кухня--наш кухня--наш кухня--наш кухня--наш
## [16] место--наш место--наш еда --наш еда --наш еда --наш
## [21] еда --наш место--меню кухня--меню кухня--меню кухня--меню
## [26] кухня--меню место--меню место--меню кухня--вкусно место--вкусно
## [31] кухня--вкусно место--вкусно место--вкусно место--вкусно кухня--вкусно
## + ... omitted several edges
ggraph(logdice.graph, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
atm <-pn.logdice %>%
filter(word1 == "атмосфера"|word2 == "атмосфера")
atm %>%
filter(word2 == "атмосфера") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
group_by(type) %>%
slice(1:200)
## # A tibble: 359 x 4
## # Groups: type [2]
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav eplace 1 1
## 2 kav pete 1 1
## 3 kav белоснежный 1 1
## 4 kav блюдо 5 1
## 5 kav бричмул 1 1
## 6 kav бронироваться 1 1
## 7 kav великолепный 2 1
## 8 kav вкус 1 1
## 9 kav вкусно 3 1
## 10 kav вкусности 1 1
## # ... with 349 more rows
atm %>%
filter(type == "veg") %>%
filter(word2 == "атмосфера") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 182 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 veg абсолютно 1 1
## 2 veg анастасия 1 1
## 3 veg английский 1 1
## 4 veg аутентичный 1 1
## 5 veg бизнес 1 1
## 6 veg блуждать 1 1
## 7 veg блюдо 7 1
## 8 veg большой 2 1
## 9 veg бумажный 1 1
## 10 veg буха 1 1
## # ... with 172 more rows
atm %>%
filter(type == "kav") %>%
filter(word2 == "атмосфера") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 177 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav eplace 1 1
## 2 kav pete 1 1
## 3 kav белоснежный 1 1
## 4 kav блюдо 5 1
## 5 kav бричмул 1 1
## 6 kav бронироваться 1 1
## 7 kav великолепный 2 1
## 8 kav вкус 1 1
## 9 kav вкусно 3 1
## 10 kav вкусности 1 1
## # ... with 167 more rows
library(igraph)
library(stringr)
library(ggraph)
logdice50.graph <- atm %>%
filter(type == "veg") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph
## IGRAPH 7f620d6 UN-- 150 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from 7f620d6 (vertex names):
## [1] атмосфера--вкусный атмосфера--вкусный атмосфера--блюдо
## [4] атмосфера--блюдо атмосфера--хороший атмосфера--хороший
## [7] атмосфера--место атмосфера--кухня атмосфера--кухня
## [10] атмосфера--место атмосфера--еда атмосфера--еда
## [13] атмосфера--наш атмосфера--наш атмосфера--меню
## [16] атмосфера--меню атмосфера--вкусно атмосфера--вкусно
## [19] атмосфера--приятный атмосфера--приятный
## + ... omitted several edges
library(igraph)
library(stringr)
library(ggraph)
logdice50.graph1 <- atm %>%
filter(type == "kav") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph1
## IGRAPH d2982c2 UN-- 153 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from d2982c2 (vertex names):
## [1] атмосфера--вкусный атмосфера--вкусный
## [3] атмосфера--блюдо атмосфера--блюдо
## [5] атмосфера--хороший атмосфера--хороший
## [7] атмосфера--кухня атмосфера--кухня
## [9] атмосфера--место атмосфера--место
## [11] атмосфера--еда атмосфера--еда
## [13] атмосфера--меню атмосфера--вкусно
## + ... omitted several edges
ggraph(logdice50.graph, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
#визуализация co-occurance среди слов посетителей национальных ресторанов
ggraph(logdice50.graph1, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
pr <-pn.logdice %>%
filter(word1 == "цена"|word2 == "цена")
pr %>%
filter(word2 == "цена") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
group_by(type) %>%
slice(1:200)
## # A tibble: 388 x 4
## # Groups: type [2]
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav komendantsky 1 1
## 2 kav алкоголь 1 1
## 3 kav армянский 1 1
## 4 kav атмосфера 1 1
## 5 kav бахрома 1 1
## 6 kav блюдо 1 1
## 7 kav божественный 1 1
## 8 kav большой 3 1
## 9 kav быстро 2 1
## 10 kav ваш 1 1
## # ... with 378 more rows
pr %>%
filter(type == "veg") %>%
filter(word2 == "цена") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 188 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 veg brown 1 1
## 2 veg james 1 1
## 3 veg v 1 1
## 4 veg адекватный 4 1
## 5 veg английский 1 1
## 6 veg атмосфера 1 1
## 7 veg банкет 1 1
## 8 veg батончик 1 1
## 9 veg безвкусный 1 1
## 10 veg белый 1 1
## # ... with 178 more rows
pr %>%
filter(type == "kav") %>%
filter(word2 == "цена") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 200 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav komendantsky 1 1
## 2 kav алкоголь 1 1
## 3 kav армянский 1 1
## 4 kav атмосфера 1 1
## 5 kav бахрома 1 1
## 6 kav блюдо 1 1
## 7 kav божественный 1 1
## 8 kav большой 3 1
## 9 kav быстро 2 1
## 10 kav ваш 1 1
## # ... with 190 more rows
logdice50.graph2 <- pr %>%
filter(type == "veg") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph2
## IGRAPH a6ae764 UN-- 164 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from a6ae764 (vertex names):
## [1] вкусный--цена вкусный--цена цена --блюдо
## [4] цена --блюдо цена --хороший цена --хороший
## [7] цена --кухня цена --место цена --место
## [10] цена --еда цена --еда цена --вкусно
## [13] цена --вкусно цена --приятный цена --приятный
## [16] цена --обслуживание цена --обслуживание цена --официант
## [19] цена --гость цена --понравиться цена --понравиться
## + ... omitted several edges
logdice50.graph3 <- pr %>%
filter(type == "kav") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph3
## IGRAPH c39147c UN-- 160 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from c39147c (vertex names):
## [1] вкусный--цена цена --блюдо цена --блюдо
## [4] цена --хороший цена --хороший цена --кухня
## [7] цена --кухня цена --еда цена --еда
## [10] цена --наш цена --меню цена --вкусно
## [13] цена --приятный цена --приятный цена --обслуживание
## [16] цена --обслуживание цена --официант цена --гость
## [19] цена --понравиться цена --понравиться цена --персонал
## + ... omitted several edges
ggraph(logdice50.graph2, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
#визуализация co-occurance слов среди посетителей национальных ресторанов
ggraph(logdice50.graph3, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
serv <- pn.logdice %>%
filter(word1 == "обслуживане"|word2 == "обслуживание")
serv %>%
filter(word2 == "обслуживание") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
group_by(type) %>%
slice(1:200)
## # A tibble: 394 x 4
## # Groups: type [2]
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav chebureki 1 1
## 2 kav hachapuri 1 1
## 3 kav kavkaz 1 1
## 4 kav luigolприятно 1 1
## 5 kav аничковбридж 1 1
## 6 kav ассортимент 1 1
## 7 kav атмосфера 7 1
## 8 kav бар 1 1
## 9 kav баранина 2 1
## 10 kav барместоположение 1 1
## # ... with 384 more rows
serv%>%
filter(type == "veg") %>%
filter(word2 == "обслуживание") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 194 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 veg адекватный 1 1
## 2 veg аккуратно 1 1
## 3 veg акция 1 1
## 4 veg александр 2 1
## 5 veg анастасия 1 1
## 6 veg атмосфера 9 1
## 7 veg бар 1 1
## 8 veg безукоризненный 1 1
## 9 veg бизнес 2 1
## 10 veg блюдо 4 1
## # ... with 184 more rows
serv %>%
filter(type == "kav") %>%
filter(word2 == "обслуживание") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 200 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav chebureki 1 1
## 2 kav hachapuri 1 1
## 3 kav kavkaz 1 1
## 4 kav luigolприятно 1 1
## 5 kav аничковбридж 1 1
## 6 kav ассортимент 1 1
## 7 kav атмосфера 7 1
## 8 kav бар 1 1
## 9 kav баранина 2 1
## 10 kav барместоположение 1 1
## # ... with 190 more rows
logdice50.graph4 <- serv %>%
filter(type == "veg") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph4
## IGRAPH d3d33db UN-- 195 194 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from d3d33db (vertex names):
## [1] вкусный --обслуживание блюдо --обслуживание
## [3] хороший --обслуживание кухня --обслуживание
## [5] место --обслуживание еда --обслуживание
## [7] наш --обслуживание меню --обслуживание
## [9] вкусно --обслуживание приятный --обслуживание
## [11] официант --обслуживание понравиться--обслуживание
## [13] персонал --обслуживание ваш --обслуживание
## + ... omitted several edges
logdice50.graph5 <- serv %>%
filter(type == "kav") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph5
## IGRAPH 073f763 UN-- 201 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from 073f763 (vertex names):
## [1] вкусный --обслуживание блюдо --обслуживание
## [3] хороший --обслуживание кухня --обслуживание
## [5] место --обслуживание еда --обслуживание
## [7] наш --обслуживание меню --обслуживание
## [9] вкусно --обслуживание приятный --обслуживание
## [11] официант --обслуживание гость --обслуживание
## [13] понравиться--обслуживание персонал --обслуживание
## + ... omitted several edges
ggraph(logdice50.graph4, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
ggraph(logdice50.graph5, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
fo <-pn.logdice %>%
filter(word1 == "еда"|word2 == "еда")
fo %>%
filter(word2 == "еда") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
group_by(type) %>%
slice(1:200)
## # A tibble: 400 x 4
## # Groups: type [2]
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav attitudy 1 1
## 2 kav coolyour 1 1
## 3 kav kavkaz 1 1
## 4 kav pete 1 1
## 5 kav st 1 1
## 6 kav аккуратно 1 1
## 7 kav аничковбридж 1 1
## 8 kav армянский 1 1
## 9 kav арсеночень 1 1
## 10 kav атмосфера 4 1
## # ... with 390 more rows
fo %>%
filter(type == "veg") %>%
filter(word2 == "еда") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 200 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 veg botanika 1 1
## 2 veg google 1 1
## 3 veg indien 1 1
## 4 veg pannacotta 1 1
## 5 veg абсолютно 1 1
## 6 veg акция 1 1
## 7 veg аппетитный 1 1
## 8 veg атмосфера 10 1
## 9 veg атмосферачудесный 1 1
## 10 veg аутентичный 1 1
## # ... with 190 more rows
fo %>%
filter(type == "kav") %>%
filter(word2 == "еда") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 200 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav attitudy 1 1
## 2 kav coolyour 1 1
## 3 kav kavkaz 1 1
## 4 kav pete 1 1
## 5 kav st 1 1
## 6 kav аккуратно 1 1
## 7 kav аничковбридж 1 1
## 8 kav армянский 1 1
## 9 kav арсеночень 1 1
## 10 kav атмосфера 4 1
## # ... with 190 more rows
logdice50.graph6 <- fo %>%
filter(type == "veg") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph6
## IGRAPH c99278c UN-- 139 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from c99278c (vertex names):
## [1] вкусный--еда вкусный--еда еда --блюдо
## [4] еда --хороший еда --хороший еда --место
## [7] еда --место еда --кухня еда --кухня
## [10] еда --наш еда --наш еда --меню
## [13] еда --меню еда --вкусно еда --приятный
## [16] еда --приятный еда --обслуживание еда --обслуживание
## [19] еда --официант еда --официант еда --понравиться
## + ... omitted several edges
logdice50.graph7 <- fo %>%
filter(type == "kav") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph7
## IGRAPH 9cf8607 UN-- 141 200 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from 9cf8607 (vertex names):
## [1] вкусный--еда вкусный--еда еда --блюдо
## [4] еда --хороший еда --хороший еда --место
## [7] еда --кухня еда --место еда --наш
## [10] еда --наш еда --меню еда --меню
## [13] еда --вкусно еда --вкусно еда --приятный
## [16] еда --приятный еда --обслуживание еда --обслуживание
## [19] еда --официант еда --официант еда --гость
## + ... omitted several edges
ggraph(logdice50.graph6, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
ggraph(logdice50.graph7, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
ts <- pn.logdice %>%
filter(word1 == "полезный"|word2 == "полезный")
ts %>%
filter(word2 == "полезный") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
group_by(type) %>%
slice(1:200)
## # A tibble: 68 x 4
## # Groups: type [2]
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav вкусный 2 1
## 2 kav влюблять 1 1
## 3 kav поесть 1 1
## 4 kav самый 1 1
## 5 veg блюдо 1 1
## 6 veg большинство 1 1
## 7 veg большой 2 1
## 8 veg вариант 1 1
## 9 veg ваш 1 1
## 10 veg взять 1 1
## # ... with 58 more rows
ts %>%
filter(type == "veg") %>%
filter(word2 == "полезный") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 64 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 veg блюдо 1 1
## 2 veg большинство 1 1
## 3 veg большой 2 1
## 4 veg вариант 1 1
## 5 veg ваш 1 1
## 6 veg взять 1 1
## 7 veg вкусно 4 1
## 8 veg вкусный 14 1
## 9 veg вкусняшекочень 1 1
## 10 veg выбор 4 1
## # ... with 54 more rows
ts %>%
filter(type == "kav") %>%
filter(word2 == "полезный") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 4 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav вкусный 2 1
## 2 kav влюблять 1 1
## 3 kav поесть 1 1
## 4 kav самый 1 1
logdice50.graph10 <- ts %>%
filter(type == "veg") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph10
## IGRAPH 3f2758e UN-- 129 139 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from 3f2758e (vertex names):
## [1] вкусный --полезный вкусный --полезный полезный--блюдо
## [4] полезный--блюдо полезный--хороший полезный--место
## [7] полезный--кухня полезный--место полезный--еда
## [10] полезный--меню полезный--меню полезный--вкусно
## [13] полезный--вкусно полезный--приятный полезный--обслуживание
## [16] полезный--ваш полезный--атмосфера полезный--большой
## [19] полезный--время полезный--рад полезный--рад
## + ... omitted several edges
logdice50.graph11 <- ts%>%
filter(type == "kav") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph11
## IGRAPH 91c2449 UN-- 9 8 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from 91c2449 (vertex names):
## [1] вкусный --полезный самый --полезный
## [3] поесть --полезный полезный--овощ
## [5] полезный--деньги полезный--разумный
## [7] полезный--влюблять полезный--собралпонравиться
ggraph(logdice50.graph10, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
ggraph(logdice50.graph11, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
nat <- pn.logdice %>%
filter(word1 == "настоящий"|word2 == "настоящий")
nat %>%
filter(word2 == "настоящий") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
group_by(type) %>%
slice(1:200)
## # A tibble: 92 x 4
## # Groups: type [2]
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav аромат 1 1
## 2 kav атмосферный 1 1
## 3 kav аутентичный 1 1
## 4 kav банкет 1 1
## 5 kav боровик 1 1
## 6 kav вечер 1 1
## 7 kav винный 1 1
## 8 kav вкусно 1 1
## 9 kav вкусный 1 1
## 10 kav вроде 1 1
## # ... with 82 more rows
nat%>%
filter(type == "veg") %>%
filter(word2 == "настоящий") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 29 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 veg блюдо 1 1
## 2 veg броня 1 1
## 3 veg вино 1 1
## 4 veg вкусный 1 1
## 5 veg вызывать 1 1
## 6 veg диапазон 1 1
## 7 veg еда 1 1
## 8 veg жалеть 1 1
## 9 veg именно 1 1
## 10 veg интерес 1 1
## # ... with 19 more rows
nat %>%
filter(type == "kav") %>%
filter(word2 == "настоящий") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 63 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav аромат 1 1
## 2 kav атмосферный 1 1
## 3 kav аутентичный 1 1
## 4 kav банкет 1 1
## 5 kav боровик 1 1
## 6 kav вечер 1 1
## 7 kav винный 1 1
## 8 kav вкусно 1 1
## 9 kav вкусный 1 1
## 10 kav вроде 1 1
## # ... with 53 more rows
logdice50.graph12 <- nat %>%
filter(type == "veg") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph12
## IGRAPH e640b24 UN-- 62 64 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from e640b24 (vertex names):
## [1] вкусный --настоящий вкусный --настоящий настоящий--блюдо
## [4] настоящий--блюдо настоящий--еда настоящий--меню
## [7] настоящий--официант настоящий--который настоящий--большой
## [10] настоящий--рад настоящий--свой настоящий--свой
## [13] настоящий--самый настоящий--выбор настоящий--вино
## [16] настоящий--столик настоящий--смузи настоящий--город
## [19] настоящий--подача настоящий--первый настоящий--свежий
## + ... omitted several edges
logdice50.graph13 <- nat%>%
filter(type == "kav") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph13
## IGRAPH 8eb8997 UN-- 140 144 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from 8eb8997 (vertex names):
## [1] настоящий--вкусный настоящий--вкусный настоящий--кухня
## [4] настоящий--место настоящий--еда настоящий--наш
## [7] настоящий--вкусно настоящий--приятный настоящий--гость
## [10] настоящий--отличный настоящий--отличный настоящий--заведение
## [13] настоящий--время настоящий--интерьер настоящий--грузинский
## [16] настоящий--заказывать настоящий--мочь настоящий--чебурек
## [19] настоящий--посещать настоящий--друг настоящий--самый
## + ... omitted several edges
ggraph(logdice50.graph12, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
ggraph(logdice50.graph13, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
en <- pn.logdice %>%
filter(word1 == "соотношение"|word2 == "соотношение")
en %>%
filter(word2 == "соотношение") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
group_by(type) %>%
slice(1:200)
## # A tibble: 49 x 4
## # Groups: type [2]
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav блестящий 1 1
## 2 kav ваш 1 1
## 3 kav вкусный 1 1
## 4 kav восхитительноотличный 1 1
## 5 kav гинза 1 1
## 6 kav город 1 1
## 7 kav еда 3 1
## 8 kav заказывать 1 1
## 9 kav изыск 1 1
## 10 kav невероятно 1 1
## # ... with 39 more rows
en %>%
filter(type == "veg") %>%
filter(word2 == "соотношение") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 25 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 veg английский 1 1
## 2 veg атмосфера 1 1
## 3 veg блюдо 1 1
## 4 veg вкусно 1 1
## 5 veg вкусный 2 1
## 6 veg интересный 1 1
## 7 veg команда 1 1
## 8 veg кухня 2 1
## 9 veg наш 1 1
## 10 veg обед 1 1
## # ... with 15 more rows
en %>%
filter(type == "kav") %>%
filter(word2 == "соотношение") %>%
dplyr::count(type, word1, n.xy, sort=TRUE) %>%
slice(1:200)
## # A tibble: 24 x 4
## type word1 n.xy n
## <chr> <chr> <int> <int>
## 1 kav блестящий 1 1
## 2 kav ваш 1 1
## 3 kav вкусный 1 1
## 4 kav восхитительноотличный 1 1
## 5 kav гинза 1 1
## 6 kav город 1 1
## 7 kav еда 3 1
## 8 kav заказывать 1 1
## 9 kav изыск 1 1
## 10 kav невероятно 1 1
## # ... with 14 more rows
logdice50.graph14 <- en %>%
filter(type == "veg") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph14
## IGRAPH fa7eba8 UN-- 36 38 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from fa7eba8 (vertex names):
## [1] вкусный --соотношение блюдо --соотношение
## [3] хороший --соотношение хороший --соотношение
## [5] соотношение--кухня соотношение--наш
## [7] соотношение--вкусно соотношение--приятный
## [9] соотношение--атмосфера соотношение--отличный
## [11] соотношение--цена соотношение--рад
## [13] соотношение--приятно соотношение--приходить
## + ... omitted several edges
logdice50.graph15 <- en %>%
filter(type == "kav") %>%
filter(!word1 == word2) %>%
filter(!str_detect(word1, "[0-9,.]+")) %>%
filter(!str_detect(word2, "[0-9,.]+")) %>%
arrange(desc(n.x + n.y)) %>%
slice(1:200) %>%
graph_from_data_frame(directed = FALSE)
logdice50.graph15
## IGRAPH 11fef54 UN-- 37 36 --
## + attr: name (v/c), type (e/c), n.xy (e/n), n.x (e/n), n.y (e/n),
## | logDice (e/n)
## + edges from 11fef54 (vertex names):
## [1] вкусный --соотношение хороший --соотношение
## [3] еда --соотношение приятный --соотношение
## [5] обслуживание--соотношение ваш --соотношение
## [7] отличный --соотношение соотношение --цена
## [9] соотношение --рекомендовать соотношение --заказывать
## [11] соотношение --приносить соотношение --приходить
## [13] соотношение --прекрасный соотношение --столик
## + ... omitted several edges
ggraph(logdice50.graph14, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()
ggraph(logdice50.graph15, layout = "fr") +
geom_edge_link(aes(edge_alpha = logDice), show.legend = FALSE) +
geom_node_point(color = "lightblue", size = 5) +
geom_node_label(aes(label = name), vjust = 1, hjust = 1) +
theme_void()